package com.konsung.ksdc.common.widget;

import android.content.Context;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.konsung.ksdc.R;
import com.konsung.ksdc.common.utils.PreferenceUtils;
import com.konsung.ksdc.common.utils.ToastUtils;
import com.konsung.ksdc.config.MyApplication;

import butterknife.Bind;
import butterknife.ButterKnife;

/**
 * 自定义数字编辑框
 * Created by Administrator on 2016/4/26 0026.
 */
public class NumEditText extends RelativeLayout {
    @Bind(R.id.et_num)
    EditText etNum;
    @Bind(R.id.btn_add)
    ImageView btnAdd;
    @Bind(R.id.btn_reduce)
    ImageView btnReduce;
    private Context context;

    /**
     * 构造方法
     * @param context 上下文
     */
    public NumEditText(Context context) {
        this(context, null);
    }

    /**
     * 构造方法
     * @param context 上下文
     * @param attrs 属性
     */
    public NumEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = View.inflate(context, R.layout.view_num_et, this);
        ButterKnife.bind(this, view);
        this.context = context;
        initEvent();
    }

    /**
     * 初始化点击事件
     */
    private void initEvent() {
        btnReduce.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                reduceAccount();
            }
        });

        etNum.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    String num = etNum.getText().toString().trim();
                    if (TextUtils.isEmpty(num)) {
                        etNum.setText(R.string.zero);
                    }
                }
            }
        });

        etNum.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                etNum.setCursorVisible(true);
            }
        });
    }

    /**
     * 返回商品数量（实际中editText的数字）
     * @return 编辑框中的数字
     */
    public int getAccount() {
        String num = etNum.getText().toString().trim();
        if (!TextUtils.isEmpty(num)) {
            int account = Integer.valueOf(num);
            if (account >= 0) {
                return account;
            }
        }
        return 0;
    }

    /**
     * 代码设置商品数量
     * @param number 设置值
     */
    public void setAccount(int number) {
        if (etNum == null) {
            return;
        }
        //如果number为0显示
        if (number == 0) {
            etNum.setText(number + "");
            return;
        }
        if (number >= 1) {
            etNum.setText(number + "");
        }
    }

    /**
     * 商品数量减1
     */
    private void reduceAccount() {
        String num = etNum.getText().toString().trim();
        if (TextUtils.isEmpty(num) || num.equals("1")) {
            ToastUtils.toastContent(context, context.getString(R.string.tip_cart_zero));
            return;
        }

        int number = Integer.valueOf(num);
        number--;
        if (number <= 0) {
            etNum.setText("0");
            return;
        }
        etNum.setText("" + number);
    }

    /**
     * 商品数量加1
     * @param productId 商品id
     */
    public void addAccount(String productId) {
        String num = etNum.getText().toString().trim();
        if (TextUtils.isEmpty(num)) {
            num = "0";
            etNum.setText(num);
        }
        int number = Integer.valueOf(num);
        number++;
        //获取详情页库存量
        int max = PreferenceUtils.getInt(MyApplication.getContext(), productId);
        if (max != -1) {

            if (number > max) {
                //如果库存量为0，显示为1
                if (max == 0) {
                    etNum.setText("1");
                    ToastUtils.toastContent(context, context.getString(R.string
                            .tip_buy_exceed));
                    return;
                }
                Toast.makeText(context, context.getString(R.string.tip_buy_exceed),
                        Toast.LENGTH_SHORT).show();
                etNum.setText("" + max);
            } else {
                //正常显示商品数
                etNum.setText("" + number);
            }
        }
    }

    /**
     * 让该自定义控件实现一个textChangeListener 并将这个对象赋值给editText组件
     * @param watcher 编辑监听
     */
    public void addTextChangeListener(TextWatcher watcher) {
        etNum.addTextChangedListener(watcher);
    }

    /**
     * 设置编辑框是否可编辑
     * @param flag 标志位
     */
    public void setEditEnable(boolean flag) {
        etNum.setEnabled(flag);
    }

    /**
     * 设置隐藏光标
     * @param flag 标志位
     */
    public void setCursorVisible(boolean flag) {
        etNum.setCursorVisible(flag);
    }

    /**
     * 获取editText控件view
     * @return editText
     */
    public EditText getEtNum() {
        return etNum;
    }

    /**
     * 获得增加控件方法
     * @return imageView
     */
    public ImageView getAddBtn() {
        return btnAdd;
    }
}
